package com.air.antispider.stream.dataprocess.businessprocess

import java.util.regex.{Matcher, Pattern}

import com.air.antispider.stream.dataprocess.constants.TravelTypeEnum
import com.air.antispider.stream.dataprocess.constants.TravelTypeEnum.TravelTypeEnum

 //TODO:对往返类型进行打标签,看看当前请求是单程还是往返
/**
  * 对往返类型进行打标签,看看当前请求是单程还是往返
  */
object TravelTypeClassifier {
  def travelTypeClassifier(httpReferrer: String): TravelTypeEnum = {
    //对httpReferrer信息进行判断，如果包含两个日期，就说明是往返，一个日期是单程
    //看当前httpReferrer里面包含几个日期
    //https://b2c.csair.com/B2C40/newTrips/static/main/page/booking/index.html
    // ?t=R&c1=CTU&c2=DLC&d1=2019-08-01&d2=2019-09-25&at=1&ct=0&it=0
    //1. 直接切割字符串,查找d1/d2的日期个数
    //2. 使用正则,进行匹配,看匹配几个
    val pattern: Pattern = Pattern.compile("(\\d{4})-(0\\d{1}|1[0-2])-(0\\d{1}|[12]\\d{1}|3[01])")
    //开始匹配
    val matcher: Matcher = pattern.matcher(httpReferrer)
    //定义匹配上的次数
    var count = 0
    //开始匹配日期，计算次数
    while (matcher.find()) {
      count = count + 1
    }
    //进行判断，匹配上几次
    if (count == 1) {
      //单程
      TravelTypeEnum.OneWay

    } else if (count == 2) {
      //往返
      TravelTypeEnum.RoundTrip
    } else {
      //不知道
      TravelTypeEnum.Unknown
    }
  }
}
